import axios from "axios";

const request = axios.create({
  // 项目的基地址
  // process.env.VUE_APP_BASE_URL 环境变量
  // process.env 是webpack的语法 在webpack打包时会找对应的.env
  // 获取到VUE_APP_BASE_URL变量的值 付给baseURL
  // 什么是环境变量
  // 根据执行命令的不同 会自动匹配对应环境
  // npm run serve 匹配开发环境 development
  // npm run build 匹配生产环境 production
  // 在此环境下生效的变量就是环境变量
  // 为什么要使用环境变量?
  // 因为开发 生产调用的接口是两套不用的接口 所以需要根据不同的环境使用不同的基地址
  baseURL: process.env.VUE_APP_BASE_URL,
  // 接口超时时间
  timeout: 20000, // request timeout
});

// 请求拦截器
// 在请求发起之前执行
// 在headers上绑定 token

// 在使用请求拦截器的时候一定要将config return
request.interceptors.request.use(
  (config) => {
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
// 在请求响应之后执行
// 对请求回来的结果进行处理
// 正确的结果 直接返回
// 错误的结果 状态码不同有不同的处理

// 在使用响应拦截器的时候一定要将正确的结果返回
request.interceptors.response.use(
  (response) => {
    return response;
  },
  (error) => {
    return Promise.reject(error);
  }
);

export default request;
